package com.yidu.ladder.system.service.impl;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yidu.ladder.system.dao.ArtificialDispatchDao;
import com.yidu.ladder.system.domain.ArtificialDispatchVo;
import com.yidu.ladder.system.service.ArtificialDispatchService;

@Service
public class ArtificialDispatchServiceImpl implements ArtificialDispatchService {

	@Autowired
	private ArtificialDispatchDao artificialDispatchDao;

	public ArtificialDispatchDao getArtificialDispatchDao() {
		return artificialDispatchDao;
	}

	public void setArtificialDispatchDao(ArtificialDispatchDao artificialDispatchDao) {
		this.artificialDispatchDao = artificialDispatchDao;
	}

	@Override
	public int insert(ArtificialDispatchVo artificialDispatchVo) {
		artificialDispatchVo.setDispatchId(UUID.randomUUID().toString().substring(0, 16));//生成UUID并截取前16位
		return artificialDispatchDao.insert(artificialDispatchVo);//返回添加成功条数
	}

	@Override
	public int update(ArtificialDispatchVo artificialDispatchVo) {
		int num = 0;//定义修改成功数为0条
		for (String dispatchId:artificialDispatchVo.getDispatchId().split(",")) {//将前端拼接的n条ID参数从包装类取出再进行字符串分割，并遍历获取单个ID
			artificialDispatchVo.setDispatchId(dispatchId);//将单个ID重新赋值给包装类
			num = num + artificialDispatchDao.update(artificialDispatchVo);//调用DAO修改方法，注入单个ID参数，并刷新修改成功数
		}
		return num;
	}

	@Override
	public int delete(String dispatchIds) {
		int num = 0;//定义删除成功数为0条
		for (String dispatchId:dispatchIds.split(",")) {//将前端拼接的n条ID参数进行字符串分割，并遍历获取单个ID
			num = num + artificialDispatchDao.delete(dispatchId);//将前端拼接的n条ID参数进行字符串分割，并遍历获取单个ID
		}
		return num;//返回删除成功条数
	}

	@Override
	public Map<String, Object> select(ArtificialDispatchVo artificialDispatchVo) {
		Map<String, Object> map = new HashMap<String, Object>();//定义一个新的Map对象
		if (artificialDispatchVo.getPage() >= 0 && artificialDispatchVo.getLimit() > 0) {//判断包装类分页的值是否有需要分页
			artificialDispatchVo.setPage((artificialDispatchVo.getPage()-1)*artificialDispatchVo.getLimit());//将包装类页码值修改为数据库查询数据起始行数
			map.put("code", 0);//设置数据编码，并将返回值放入Map对象中的编码
			map.put("count", artificialDispatchDao.count(artificialDispatchVo));//调用DAO计数方法，并将返回值放入范型Map中的计数
		}
		map.put("data", artificialDispatchDao.select(artificialDispatchVo));//调用DAO查询方法，注入包装类参数，并将返回值放入Map对象中的数据
		return map;//返回带有数据的Map对象
	}
}
